<?php
/**
* @package   auto_occasion
* @subpackage essais
* @author    your name
* @copyright 2011 your name
* @link      http://www.yourwebsite.undefined
* @license    All rights reserved
*/


/**
 * Classe pour la gestion de technique
 */
class BoModeleTechniqueCtrl extends jController {
    
public $pluginParams = array(
        '*' => array('auth.required' => true),
     );
    
    /**
    * Affiche la gestion du Technique 
    */
    function index() {
        $rep = $this->getResponse('html');


		$rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jconfirmaction.jquery.js');
        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jconfirmaction.jquery.ask.js');

		jClasses::inc('essais~essaisSrv');
		$iEssaiId = $this->intParam('iId') ;

		$toParams['oEssai'] = ($iEssaiId) ? essaisSrv::getById($iEssaiId) : common::init('ao_essais') ;
		
        $rep->menusActifs = adminHtmlResponse::MENU_FICHES_GAMMES ;

        $rep->bodyTpl = 'essais~BoModeleTechnique';
		$rep->body->assign($toParams) ;

		$rep->body->assignZone('listeCaracteristique', 'essais~listeCaracteristique', array('id'=>$iEssaiId));
		$rep->body->assignZone('listeVersion', 'essais~listeVersion', array('id'=>$iEssaiId));
        $rep->body->assignZone ('oZoneModeleLeft', 'essais~BoModeleLeft', array('iId' => $iEssaiId)) ;

        return $rep;
    }

    /**
    * Affiche la gestion du Technique 
    */
    function tableau() {
        $rep = $this->getResponse('html');


		$rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jconfirmaction.jquery.js');
        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jconfirmaction.jquery.ask.js');

		jClasses::inc('essais~essaisSrv');
        jClasses::inc("essais~caracteristiqueSrv");
        jClasses::inc("essais~versionSrv");

		$iEssaiId = $this->intParam('iId') ;

		$toParams['oEssai']          = ($iEssaiId) ? essaisSrv::getById($iEssaiId) : common::init('ao_essais') ;
		$toParams['caracteristique'] = ($iEssaiId) ? caracteristiqueSrv::getByEssaiId($iEssaiId) : common::init('ao_essais_caracteristique') ;
		$toParams['version']         = ($iEssaiId) ? versionSrv::getByEssaiId($iEssaiId) : common::init('ao_essais_version') ;
		
        $rep->menusActifs = adminHtmlResponse::MENU_FICHES_GAMMES ;

        $rep->bodyTpl = 'essais~BoModeleTechniqueTableau';
		$rep->body->assign($toParams) ;

		$rep->body->assignZone('tableau', 'essais~tableau', array('id'=>$iEssaiId));


        return $rep;
    }


	/***
	 * Enregistre une carctéristique à la volée
	 *
	 */
	function saveTableau () {
        
        $rep             = $this->getResponse('text') ;
        
        jClasses::inc("essais~techniqueSrv");
        jClasses::inc("commun~common");

        $params = common::init('ao_essais_caracteristique_version');
        $params->id_version         = $this->intParam('version', 0) ;
        $params->id_caracteristique = $this->intParam('car', 0) ;
        $params->id_essai           = $this->intParam('essaiId') ;
        $params->description        = $this->stringParam('desc', '') ;
        //get id à partir id_version, id_caracteristique, id_essai pour vérifier si ajout ou update
        $params->id = techniqueSrv::check($params);
      
        if(!$params->id){
            techniqueSrv::ajouterCaracteristiqueVersion($params);
        } else {
            techniqueSrv::modifierCaracteristiqueVersion($params);
        }
        $rep->content = $essaiId ;
        
        return $rep;
    }
	/***
	 * Enregistre une carctéristique à la volée
	 *
	 */
	function saveCaracteristique () {
        
        $rep      = $this->getResponse('text') ;
        $essaiId  = $this->intParam('essaiId') ;
        $caracteristique   = $this->stringParam('zChoix', '') ;
        
        jClasses::inc("essais~techniqueSrv");
        
        techniqueSrv::ajouterCaracteristique($essaiId, $caracteristique);
        
        $rep->content = $essaiId ;
        
        return $rep;
    }

	/***
	 * Supprime une carctéristique à la volée
	 *
	 */
	function supprCaracteristique () {
        
        $rep = $this->getResponse('redirect');
        jClasses::inc('commun~common');

        $id = $this->stringParam('id');
        $essaiId = $this->stringParam('iId');
        common::supprimer($id, 'ao_essais_caracteristique');

        $rep->action = 'essais~BoModeleTechnique:index';
        $rep->params = array('iId' => $essaiId) ;


        return $rep;
    }

	/***
	 * Enregistre une version à la volée
	 *
	 */
	function saveVersion () {
        
        $rep      = $this->getResponse('text') ;
        $essaiId  = $this->intParam('essaiId') ;
        $version   = $this->stringParam('zVersion', '') ;
        
        jClasses::inc("essais~techniqueSrv");
        
        techniqueSrv::ajouterVersion($essaiId, $version);
        
        $rep->content = $essaiId ;
        
        return $rep;
    }

	/***
	 * Supprime une version à la volée
	 *
	 */
	function supprVersion () {
        
        $rep = $this->getResponse('redirect');
        jClasses::inc('commun~common');

        $id = $this->stringParam('id');
        $essaiId = $this->stringParam('iId');
        common::supprimer($id, 'ao_essais_version');

        $rep->action = 'essais~BoModeleTechnique:index';
        $rep->params = array('iId' => $essaiId) ;


        return $rep;
    }
    
    /**
    * Technique : Saisie des versions et de leurs caractèristiques 
    */
    function techniques() {
        jClasses::inc('commun~common');
        jClasses::inc('essais~essaisSrv');
        
        $rep = $this->getResponse('html');


		$rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jconfirmaction.jquery.js');
        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jconfirmaction.jquery.ask.js');

		
		$iEssaiId = $this->intParam('iId') ;
        $versionInfos = essaisSrv::getEssaiVersions($iEssaiId);
        if(count($versionInfos->listeValeur) > 0){
            $toParams['idCarb'] = $versionInfos->carburation;
        
            // ------------------------------------------------
            /** 
             * redondance au niveau de $versionInfos->listeTitre. regrouper les mm titres et récupérer les ids des doublons afin de modifier TValeur_titre_id ds 
             * $versionInfos->listeValeur
             */
            $idAModifier = essaisSrv::listeDoublonTitre($versionInfos->listeTitre);

            // modifier l'id reliant au titre dans $versionInfos->listeValeur
            if (sizeof($idAModifier)) {
                $versionInfos->listeValeur = essaisSrv::modifyValueTitle($versionInfos->listeValeur, $idAModifier);
                // dédoublonne les titres
                $versionInfos->listeTitre = essaisSrv::dedoublonneValueTitle($versionInfos->listeTitre, $idAModifier);
            }
            // ------------------------------------------------
            $toParams['versionInfos']  = $versionInfos ; 

        }

		$toParams['oEssai'] = ($iEssaiId) ? essaisSrv::getById($iEssaiId) : common::init('ao_essais') ;
        
        $rep->menusActifs = adminHtmlResponse::MENU_FICHES_GAMMES ;

        $rep->bodyTpl = 'essais~BoEssaiTechnique';
		$rep->body->assign($toParams) ;
        $rep->body->assignZone ('oZoneModeleLeft', 'essais~BoModeleLeft', array('iId' => $iEssaiId)) ;


        return $rep;
    }
    /**
    * Technique : Saisie des versions et de leurs caractèristiques 
    */
    function saveTechniques() {
        jClasses::inc('commun~common');
        jClasses::inc('essais~essaisSrv');
        
        $rep = $this->getResponse('html');


		$rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jconfirmaction.jquery.js');
        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jconfirmaction.jquery.ask.js');

		
		$iEssaiId   = $this->intParam('iId') ;
		$idCarb     = $this->intParam('id_carburation') ;
        $texte      = $this->stringParam('texte');
        $tabTexte   = explode(PHP_EOL,$texte);
        $etat_texte = true;
        
        //test de l'etat du texte
        if((count($tabTexte) <=1 ) || (count($tabTexte) == 6)) $etat_texte = false;
        if($etat_texte){
            $tab_texte_version  = array_slice($tabTexte, 0, 1);
            $tab_texte_classic  = array_slice($tabTexte, 1);
            $nb_vers            = count(explode(';',$tab_texte_version[0]));
            $nb_lignes          = count($tab_texte_classic) ;
            for($i=0 ; $i<$nb_lignes ; $i++){
                $nbCar = count(explode(';',$tab_texte_classic[$i]));
                if(($nbCar != 2) && ($nbCar != ($nb_vers))){
                    $etat_texte = false;
                }
            }
        }
        //fin test
        if(!$etat_texte ){
            $versionInfos = essaisSrv::getEssaiVersions($iEssaiId);
            if(count($versionInfos->listeValeur) > 0){
                $toParams['versionInfos']  = $versionInfos ; 
            }
            $toParams['texte']  = $texte;
            $toParams['idCarb'] = $idCarb;
            $toParams['erreur'] = 1;
        } else {
            $tech         = essaisSrv::insertVersionCarateristiques($iEssaiId,$idCarb,$texte);
            $versionInfos = essaisSrv::getVersionInfos($tech);
            $versionInfos->carburation    = common::chargeParId($idCarb, "ao_carburation");
            $toParams['versionInfos']  = $versionInfos ; 
            $toParams['idCarb'] = $idCarb;
        }
        $toParams['oEssai'] = ($iEssaiId) ? essaisSrv::getById($iEssaiId) : common::init('ao_essais') ;
        $toParams['carburation'] = common::liste('ao_carburation') ;
            
        $rep->menusActifs = adminHtmlResponse::MENU_FICHES_GAMMES ;
        $rep->bodyTpl = 'essais~BoEssaiTechnique';
        $rep->body->assign($toParams) ;
        $rep->body->assignZone ('oZoneModeleLeft', 'essais~BoModeleLeft', array('iId' => $iEssaiId)) ;
        

        return $rep;
    }




}